Guix System Distribution
   HOME

TheInfoList



OR:

GNU Guix System or Guix System (previously ''GuixSD'') is a
rolling release Rolling release, also known as rolling update or continuous delivery, is a concept in software development of frequently delivering updates to applications. This is in contrast to a ''standard'' or ''point release'' development model which uses so ...
,
free and open source Free and open-source software (FOSS) is a term used to refer to groups of software consisting of both free software and open-source software where anyone is freely licensed to use, copy, study, and change the software in any way, and the source ...
Linux distribution A Linux distribution (often abbreviated as distro) is an operating system made from a software collection that includes the Linux kernel and, often, a package management system. Linux users usually obtain their operating system by downloading one ...
built around the
GNU Guix GNU Guix () is a functional cross-platform package manager and a tool to instantiate and manage Unix-like operating systems, based on the Nix package manager. Configuration and package recipes are written in Guile Scheme. GNU Guix is the default ...
package manager A package manager or package-management system is a collection of software tools that automates the process of installing, upgrading, configuring, and removing computer programs for a computer in a consistent manner. A package manager deals wi ...
. It enables a declarative operating system configuration and allows reliable system upgrades that can easily be rolled back. It uses the GNU Shepherd
init In Unix-based computer operating systems, init (short for ''initialization'') is the first process started during booting of the computer system. Init is a daemon process that continues running until the system is shut down. It is the direct ...
system and the
Linux-libre Linux-libre is a modified version of the Linux kernel that contains no binary blobs, obfuscated code, or code released under proprietary licenses. In the Linux kernel, they are mostly used for proprietary firmware images. While generally redis ...
kernel, with support for the
GNU Hurd GNU Hurd is a collection of microkernel servers written as part of GNU, for the GNU Mach microkernel. It has been under development since 1990 by the GNU Project of the Free Software Foundation, designed as a replacement for the Unix kernel, and ...
kernel under development. On February 3, 2015, the distribution was added to the
Free Software Foundation The Free Software Foundation (FSF) is a 501(c)#501(c)(3), 501(c)(3) non-profit organization founded by Richard Stallman on October 4, 1985, to support the free software movement, with the organization's preference for software being distributed ...
's list of free Linux distributions. The Guix package manager and the Guix System drew inspiration from the
Nix Nix or NIX may refer to: Places * Nix, Alabama, an unincorporated community, United States * Nix, Texas, a ghost town in southwestern Lampasas County, Texas, United States * Nix (moon), a moon of Pluto People * Nix (surname), listing people with ...
package manager and
NixOS NixOS is a Linux distribution built on top of the Nix package manager. It uses declarative configuration and allows reliable system upgrades. Several official package "channels" are offered, including the current Stable release and the Unstable ...
respectively.


Architecture support

The following CPU architectures are supported:
IA-32 IA-32 (short for "Intel Architecture, 32-bit", commonly called i386) is the 32-bit version of the x86 instruction set architecture, designed by Intel and first implemented in the 80386 microprocessor in 1985. IA-32 is the first incarnation of ...
,
x86-64 x86-64 (also known as x64, x86_64, AMD64, and Intel 64) is a 64-bit version of the x86 instruction set, first released in 1999. It introduced two new modes of operation, 64-bit mode and compatibility mode, along with a new 4-level paging mod ...
,
ARM7 ARM7 is a group of 32-bit RISC ARM processor cores licensed by ARM Holdings for microcontroller use. The ARM7 core family consists of ARM700, ARM710, ARM7DI, ARM710a, ARM720T, ARM740T, ARM710T, ARM7TDMI, ARM7TDMI-S, ARM7EJ-S. The ARM7TDMI a ...
,
AArch64 AArch64 or ARM64 is the 64-bit extension of the ARM architecture family. It was first introduced with the Armv8-A architecture. Arm releases a new extension every year. ARMv8.x and ARMv9.x extensions and features Announced in October 2011, AR ...
,
POWER9 POWER9 is a family of superscalar, multithreading, multi-core microprocessors produced by IBM, based on the Power ISA. It was announced in August 2016. The POWER9-based processors are being manufactured using a 14 nm FinFET process, in ...
.


Features


System services

System services are a core feature in Guix System that enable the user to declaratively compose the configuration of daemons and background services and easily specify the relevant configurations. This enables the user, within a single configuration file, to declare the whole OS (e.g., to have a tor proxy, an sshd server, and a webserver serving guix-web via nginx on a specific port at bootup). System services can: * generate files in the filesystem (needed by some applications e.g. files in /etc) * run any code for setting up daemons * create specific user and group accounts (e.g. a database user for postgresql) Ricardo Wurmus, one of the maintainers, explains the extendability as follows: All the services are defined using Guile Scheme. The list of services continues to grow and as of 1.0.0 includes the following: * Base Services: Essential system services. * Scheduled Job Execution: The service. * Log Rotation: The service. * Networking Services: Network setup, SSH daemon, etc. * X Window: Graphical display. * Printing Services: Local and remote printer support. * Desktop Services: D-Bus and desktop services. * Sound Services: ALSA and Pulseaudio services. * Database Services: SQL databases, key-value stores, etc. * Mail Services: IMAP, POP3, SMTP, and so forth. * Messaging Services: Messaging services. * Telephony Services: Telephony services. * Monitoring Services: Monitoring services. * Kerberos Services: Kerberos services. * LDAP Services: LDAP services. * Web Services: Web servers. * Certificate Services: TLS certificates via Let's Encrypt. * DNS Services: DNS daemons. * VPN Services: VPN daemons. * Network File System: NFS related services. * Continuous Integration: The Cuirass service. * Power Management Services: Extending battery life. * Audio Services: The MPD. * Virtualization Services: Virtualization services. * Version Control Services: Providing remote access to Git repositories. * Game Services: Game servers. * Miscellaneous Services: Other services.


GNU Shepherd init system

The Guix System uses the GNU Daemon Shepherd as its
init In Unix-based computer operating systems, init (short for ''initialization'') is the first process started during booting of the computer system. Init is a daemon process that continues running until the system is shut down. It is the direct ...
system, which is developed in tandem with Guix and is written in
Guile Guile may refer to: * Astuteness, deception. * GNU Guile, an implementation of the Scheme programming language * Guile (''Street Fighter''), a video game character from the ''Street Fighter'' series * Guile (''Chrono Cross''), a video game chara ...
as well. It was previously known as "dmd", which stood for "Daemon managing Daemons" or "Daemons-managing Daemon", but changed names to avoid
collision In physics, a collision is any event in which two or more bodies exert forces on each other in a relatively short time. Although the most common use of the word ''collision'' refers to incidents in which two or more objects collide with great fo ...
with the
Digital Mars Digital Mars is a small American software company owned by Walter Bright and based in Vienna, Virginia, that makes C, C++ and D compilers, and associated utilities such as an integrated development environment (IDE) for Windows and DOS, which D ...
D compiler. Shepherd supplies user-space functionality asynchronously as services, which under Shepherd are
generic functions In computer programming, a generic function is a function defined for Polymorphism (computer science), polymorphism. In statically typed languages In statically typed languages (such as C++ and Java (programming language), Java), the term ''gen ...
and
object Object may refer to: General meanings * Object (philosophy), a thing, being, or concept ** Object (abstract), an object which does not exist at any particular time or place ** Physical object, an identifiable collection of matter * Goal, an ...
data type In computer science and computer programming, a data type (or simply type) is a set of possible values and a set of allowed operations on it. A data type tells the compiler or interpreter how the programmer intends to use the data. Most progra ...
s that are exported for use by the Shepherd to extend the base operating system in some clearly defined way. In contrast to
systemd systemd is a software suite that provides an array of system components for Linux operating systems. Its main aim is to unify service configuration and behavior across Linux distributions; Its primary component is a "system and service manager ...
, a userspace shepherd process runs as the user. Central to the Shepherd model of
user space A modern computer operating system usually segregates virtual memory into user space and kernel space. Primarily, this separation serves to provide memory protection and hardware protection from malicious or errant software behaviour. Kernel ...
initialization is the concept of the ''extension'', a form of
composability Composability is a system design principle that deals with the inter-relationships of components. A highly composable system provides components that can be selected and assembled in various combinations to satisfy specific user requirements. In ...
whereby services are designed to be layered onto other services, augmenting them with more elaborate or specialised behaviours as desired. This expresses the instantiation-based dependency relationships found in many modern init systems, making the system modular, but also allows services to interact variadically with other services in arbitrary ways, e.g. a service which extends two other services, ''requiring'' only one to be present, but readily extending the second one if it is later instantiated without the need for any further reconfiguration or setup. Shepherd also provides so-called ''virtual services'' which allow
dynamic dispatch In computer science, dynamic dispatch is the process of selecting which implementation of a polymorphic operation (method or function) to call at run time. It is commonly employed in, and considered a prime characteristic of, object-oriented ...
over a class of related service objects, such as all those which instantiate a
mail transfer agent The mail or post is a system for physically transporting postcards, letters, and parcels. A postal service can be private or public, though many governments place restrictions on private systems. Since the mid-19th century, national postal syst ...
(MTA) for the system. A system governed via the Shepherd daemon can represent its user space as a
directed acyclic graph In mathematics, particularly graph theory, and computer science, a directed acyclic graph (DAG) is a directed graph with no directed cycles. That is, it consists of vertices and edges (also called ''arcs''), with each edge directed from one ve ...
, with the "system-service," which is responsible for early phases of boot and init, as its root, and all subsequently initialized services as extensions to system-service functionality, either directly or transitively over other services. Being both written and configured in
Guile Scheme GNU Ubiquitous Intelligent Language for Extensions (GNU Guile) is the preferred extension language system for the GNU Project and features an implementation of the programming language Scheme. Its first version was released in 1993. In addition ...
, GNU Shepherd is intended to be highly programmable by the system administrator, but it can also be used to manage per-user profiles of unprivileged daemons and services. Its services and configuration are stored uniformly as object-oriented
Scheme A scheme is a systematic plan for the implementation of a certain idea. Scheme or schemer may refer to: Arts and entertainment * ''The Scheme'' (TV series), a BBC Scotland documentary series * The Scheme (band), an English pop band * ''The Schem ...
code, and while a core set of services are provided with the basic Guix System, arbitrary new services can be flexibly declared, and through Guile's
object system Object-oriented programming (OOP) is a programming paradigm based on the concept of " objects", which can contain data and code. The data is in the form of fields (often known as attributes or ''properties''), and the code is in the form of p ...
, GOOPS, existing services can be redefined at the user's discretion by asking the Shepherd to dynamically rewrite services in specified ways on instantiation. GNU Shepherd was originally designed to work with
GNU Hurd GNU Hurd is a collection of microkernel servers written as part of GNU, for the GNU Mach microkernel. It has been under development since 1990 by the GNU Project of the Free Software Foundation, designed as a replacement for the Unix kernel, and ...
, and was later adopted by Guix System.


Release and stability

To date, the Guix System is dependent on unstable git repository development shared with Guix but enables users or organizations to set up stable release channels themselves via the channel-feature.


Updates

Packages in Guix are generally very up-to-date thanks to the lack of a package maintainer bottlenecks. Anyone can contribute an update subject to community approval and the process is assisted by tools such as ''guix refresh''. Changes to the git repository are peer-reviewed by community members and committed by one of the 45 people with commit access. In practice these builds sometimes cause system breakages for users because of a typo or similar error, but these are often solved within minutes. The way Guix pull operates means users retain a working system in the meantime.


Roll-back

If a system update leaves users with a broken system, users can easily roll back individual packages as well as the whole system state. This means that the kind of stable channel that is very common in other Linux distributions is no longer needed for users who are willing to report a bug and wait a few minutes, when trying to update via ''guix pull''.


Reception

Jesse Smith from DistroWatch Weekly reviewed GNU Guix System 0.15.0 (at the time named GuixSD), and said, "GuixSD has a package manager that I like", but criticized the limited hardware support and its limited documentation. The documentation has since then been expanded and improved with videos and a cookbook in six languages with tutorials, how-to guides and examples.


See also

*
GNU Guix GNU Guix () is a functional cross-platform package manager and a tool to instantiate and manage Unix-like operating systems, based on the Nix package manager. Configuration and package recipes are written in Guile Scheme. GNU Guix is the default ...
*
Debian GNU/Hurd Debian (), also known as Debian GNU/Linux, is a Linux distribution composed of free and open-source software, developed by the community-supported Debian Project, which was established by Ian Murdock on August 16, 1993. The first version of Deb ...
*
Comparison of Linux distributions Technical variations of Linux distributions include support for different hardware devices and systems or software package configurations. Organizational differences may be motivated by historical reasons. Other criteria include security, includi ...
*
NixOS NixOS is a Linux distribution built on top of the Nix package manager. It uses declarative configuration and allows reliable system upgrades. Several official package "channels" are offered, including the current Stable release and the Unstable ...
– A similar operating system, which inspired GNU Guix


References


External links

* *
List of Guix packages
{{Linux distributions
Guix GNU Guix () is a functional cross-platform package manager and a tool to instantiate and manage Unix-like operating systems, based on the Nix package manager. Configuration and package recipes are written in Guile Scheme. GNU Guix is the default ...
Free software only Linux distributions GNU Project Free package management systems Free software programmed in Lisp Functional programming GNU Project software Linux package management-related software Linux distributions without systemd Rolling Release Linux distributions Linux distributions Independent Linux distributions